﻿using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace Operacional
{
    public partial class frmDisplay : Form
    {
        Tempos _myTimes;
        public frmDisplay()
        { InitializeComponent(); }

        private void frmDisplay_Load(object sender, EventArgs e)
        {
            this.Dock = DockStyle.Fill;
            Program.Entrada.tmrLogin.Stop();
            string Linha = frmLinhas.numLinha;

            Program.Entrada.lblStatus.Text = "Utilizador: " + frmEntrada.dvUsers[0][1].ToString() + " Linha: " + Linha;

            frmLinhas.dvLinhas_Tarefas.RowFilter = string.Format("[Linha]='{0}' and [Estado]='I'", Linha);

            string CodTarefa = frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Tarefa"].ToString();

            frmLinhas.dvTarefas.RowFilter = string.Format("Tare_Cod Like '{0}'", CodTarefa);
            string Tarefa = frmLinhas.dvTarefas[frmLinhas.dvTarefas.Count - 1]["Tare_Des"].ToString();
            string TarefaDes = frmLinhas.dvTarefas[frmLinhas.dvTarefas.Count - 1]["Tare_Obs"].ToString();
            
            _myTimes = new Tempos();
            _myTimes.AvgTimes_();
            this.tmr.Enabled = true;

            this.lblLinha.Text = Tarefa + " - Linha: " + Linha;
            this.lblObservacoes.Text = TarefaDes;
            this.txtObs.Text = frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Observacoes"].ToString().Replace("\"", "");

            #region Media Tempos
            this.btnMedia.Text = string.Format("{0}.{1}:{2}:{3}", Math.Abs(_myTimes.Media.TotalDays).ToString("00"),
                                                                   Math.Abs(_myTimes.Media.Hours).ToString("00"),
                                                                   Math.Abs(_myTimes.Media.Minutes).ToString("00"),
                                                                   Math.Abs(_myTimes.Media.Seconds).ToString("00"));
            #endregion
        }

        private void tmr_Tick(object sender, EventArgs e)
        {
            frmLinhas.dvLinhas_Tarefas.RowFilter = string.Format("Linha='{0}' And Estado Like 'I'", frmLinhas.numLinha);

            try
            {
                _myTimes.Duracao_();
                this.btnDuracao.Text = string.Format("{0}.{1}:{2}:{3}", Math.Abs(_myTimes.Duracao.Days).ToString("00"),
                                                                        Math.Abs(_myTimes.Duracao.Hours).ToString("00"),
                                                                        Math.Abs(_myTimes.Duracao.Minutes).ToString("00"),
                                                                        Math.Abs(_myTimes.Duracao.Seconds).ToString("00"));
            }
            catch
            { }

            #region Muda Cor Duracao
            if (TimeSpan.Parse(this.btnDuracao.Text) > TimeSpan.Parse(this.btnMedia.Text) && (this.btnMedia.Text != "00.00:00:00"))
            {
                double dDuracao = Convert.ToDouble(TimeSpan.Parse(this.btnDuracao.Text).TotalSeconds);
                double dMedia = Convert.ToDouble(TimeSpan.Parse(this.btnMedia.Text).TotalSeconds);

                this.btnDuracao.FlatStyle = FlatStyle.Standard;

                if (dDuracao > dMedia + 0.25 * dMedia)
                    this.btnDuracao.BackColor = Color.Red;
                else
                    this.btnDuracao.BackColor = Color.Orange;
            }
            else
                this.btnDuracao.BackColor = System.Drawing.Color.Green;
            #endregion
        }

        private void btnEnd_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Deseja Terminar a Tarefa Actual?", "Terminar Tarefa", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                #region Nova Row

                DataRow dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
                dRow.ItemArray = new object[] {null,  frmLinhas.numLinha, frmLinhas.dvTarefas[frmLinhas.dvTarefas.Count - 1]["Tare_Cod"].ToString(),frmLinhas.dvTarefas[frmLinhas.dvTarefas.Count - 1]["Tare_Des"].ToString(),
                                                DateTime.Now, this.btnDuracao.Text,"F", this.txtObs.Text, frmEntrada.dvUsers[0][0].ToString(),frmEntrada.dvUsers[0][1].ToString()};

                frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
                frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

                #endregion

                frmLinhas Linhas = new frmLinhas();
                Linhas.MdiParent = Program.Entrada;
                Linhas.Show();
                this.Close();
            }
        }

        private void btnGravaObs_Click(object sender, EventArgs e)
        {
            DataRow[] dRow =
                frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Select("Id=" + frmLinhas.dvLinhas_Tarefas[frmLinhas.dvLinhas_Tarefas.Count - 1]["Id"]);
            dRow[0]["Observacoes"] = "\"" + this.txtObs.Text + "\"";

            frmEntrada.daLinhas_Tarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
            MessageBox.Show("Observação gravada.", "Sucesso");
        }

        private void btnManutencao_Click(object sender, EventArgs e)
        {
            frmManutencao Manutenção = new frmManutencao();
            Manutenção.MdiParent = Program.Entrada;
            Manutenção.Show();
            this.Close();
            this.Dispose();
        }
    }
}
